// 处理 MM-dd hh:mm:ss 只输入一位时的处理方法
// 例如: 期望返回 yyyy-MM-dd hh:mm:ss 的格式   但是给定的时间为: 2019-4-4 12:4:4
function padLeftZero(str) {
    // return ('00' + str).substr(str.length)
    return str.padStart(2, '0')
  }
/**  格式化时间的封装 方案 1
 * @param {String | Number | Date} date default +new Date()
 * @param {String} fmt default 'yyyy-MM-dd'
 * @returns String
 */
export function formatDate(date = +new Date(), fmt = 'yyyy-MM-dd') {
    date = new Date(date)
    // debugger
    // 先处理年份
    // 正则y+ 匹配一个或多个y
    const yearReg = /(y+)/
    if (yearReg.test(fmt)) {
        const [, matched] = yearReg.exec(fmt) // 第一个匹配的项,生成的数组的第1个
        // 使用.replace() 替换 RegExp.$1 匹配到的值为 date.getFullYear
        // .substr() 截取 RegExp.$1 匹配到的 长度
        // 例如：通过/(y+).test(fmt)匹配到RegExp.$1的值为 yyy 则替换 yyy.replace('yyy',(2019 + ' ').substr(1)) 结果为: 019
        fmt = fmt.replace(matched, (date.getFullYear() + '').substring(4 - matched.length))
    }
    const o = {
        'M+': date.getMonth() + 1,
        'd+': date.getDate(),
        'H+': date.getHours(),
        'm+': date.getMinutes(),
        's+': date.getSeconds()
    }
    for (const k in o) {
        const reg = new RegExp(`(${k})`)
        if (reg.test(fmt)) {
            const str = padLeftZero(o[k] + '')
            // fmt = fmt.replace(RegExp.$1, str)
            fmt = fmt.replace(reg.exec(fmt)[1], str)
        }
    }
    return fmt
}